package com.stefanini.pe.bbva.iivs.in.model.solicitud;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import org.apache.myfaces.custom.fileupload.UploadedFile;

import com.stefanini.pe.bbva.iivs.in.bo.iface.AnexoSolicitudService;
import com.stefanini.pe.bbva.iivs.in.bo.iface.HistSolicitudService;
import com.stefanini.pe.bbva.iivs.in.bo.iface.MultitablaService;
import com.stefanini.pe.bbva.iivs.in.bo.iface.Oficina1Service;
import com.stefanini.pe.bbva.iivs.in.bo.iface.OficinaService;
import com.stefanini.pe.bbva.iivs.in.bo.iface.OperacionBancariaService;
import com.stefanini.pe.bbva.iivs.in.bo.iface.SolicitudOperBanService;
import com.stefanini.pe.bbva.iivs.in.bo.iface.SolicitudService;
import com.stefanini.pe.bbva.iivs.in.bo.iface.TerritorioService;
import com.stefanini.pe.bbva.iivs.in.bo.iface.TipoDocumentoService;
import com.stefanini.pe.bbva.iivs.in.listeners.SpringInit;
import com.stefanini.pe.bbva.iivs.in.to.Multitabla;
import com.stefanini.pe.bbva.iivs.in.to.Solicitud;
import com.stefanini.pe.bbva.iivs.in.to.TipoDocumento;



public class SolicitudModel {
	private boolean disabledExportar;
    private String tamanioSolicitud_DataSource;
	private Solicitud solicitudRegistrar= new Solicitud();
	private Solicitud solicitudBuscar= null;
	private Solicitud solicitudModificar;
	private Solicitud solicitudModificarInicial;
	private SolicitudService solicitudService;
	private ArrayList solicitud_DataSource=new ArrayList();
	private ArrayList solicitud_SelectedRows=new ArrayList();
	private int solicitud_LastIndex=-1; 
	private boolean grabarModificar=false;
	String lblError_Text = "";
	String txtMarca="";
	private boolean mostrarSeguimiento=false;
	private ArrayList documentos_DataSource=new ArrayList();
	private TipoDocumentoService tipoDocumentoService;
	private boolean adjuntarBorrar=false;
	private TipoDocumento tipoDocumento;
	UploadedFile cargaFile = null;
	private ArrayList<UploadedFile> listaDocumentos = new ArrayList<UploadedFile>();
	private AnexoSolicitudService anexoSolicitudService;
	private HistSolicitudService histSolicitudService;
	private ArrayList seguimiento_DataSource= new ArrayList();
	private OficinaService oficinaService;
	private Oficina1Service oficina1Service;

	private boolean isPostBack=false;
	String lblInfo_Text = "";

	String msjconfirmRequest;
	String msjRequest;
	String valorAncla;	

	private ArrayList documentosObligatorios_DataSource=new ArrayList();
	private ArrayList documentosOpcionales_DataSource=new ArrayList();
    private MultitablaService multitablaService;

	private ArrayList solicitudOperBancarias_DataSource=new ArrayList();
	String txtDesOperBan;
	private SolicitudOperBanService solicitudOperBanService;
	private OperacionBancariaService operacionBancariaService;
	
	private ArrayList listOficinasTerritorio = new ArrayList(); 
	
	private TerritorioService territorioService;
	
	private String codTerritorio;
	private String desTerritorio;
	
	//private String contextPath; 
	
	protected FacesContext facesContext;
	public FacesContext getFacesContext() {
		return facesContext;
	}
	protected Map sessionScope;
	
	public Map getSessionScope() {
		return sessionScope;
	}
	public HttpSession getSession(boolean arg0)
	{
		return (HttpSession)(getFacesContext().getExternalContext().getSession(arg0));
	}

	public SolicitudModel() {
		
		solicitudBuscar =new Solicitud();
		tipoDocumentoService = (TipoDocumentoService)SpringInit.getApplicationContext().getBean("tipoDocumentoService");
		solicitudService = (SolicitudService)SpringInit.getApplicationContext().getBean("solicitudService");
		anexoSolicitudService = (AnexoSolicitudService)SpringInit.getApplicationContext().getBean("anexoSolicitudService");
		histSolicitudService = (HistSolicitudService)SpringInit.getApplicationContext().getBean("histSolicitudService");
		oficinaService = (OficinaService)SpringInit.getApplicationContext().getBean("oficinaService");
    	multitablaService = (MultitablaService)SpringInit.getApplicationContext().getBean("multitablaService");
    	solicitudOperBanService = (SolicitudOperBanService)SpringInit.getApplicationContext().getBean("solicitudOperBanService");
    	operacionBancariaService = (OperacionBancariaService)SpringInit.getApplicationContext().getBean("operacionBancariaService");
    	territorioService = (TerritorioService)SpringInit.getApplicationContext().getBean("territorioService");
		
    	oficina1Service = (Oficina1Service)SpringInit.getApplicationContext().getBean("oficina1Service");

    	Multitabla multitabla=new Multitabla();
    	multitabla.setCodMult("T05");
    	List listaMultDocObligatorios= multitablaService.selectDynamicWhere(multitabla);
    
    	for (Iterator iterator  = listaMultDocObligatorios.iterator(); iterator.hasNext();) {
    		Multitabla object = (Multitabla) iterator .next();
    		TipoDocumento tipoDocumento =new TipoDocumento();
    		tipoDocumento.setCodDoc(object.getCodElem());
    		tipoDocumento.setDesDoc(object.getValor1());
    		tipoDocumento.setObligatorio("0");
    		documentosObligatorios_DataSource.add(tipoDocumento);
		}

//		Solicitud solicitud= new Solicitud();
//		//List lista= solicitudService.selectDynamicWhere(solicitud);
//		List lista= solicitudService.selectDynamicWhereLike(solicitud);
//		this.setSolicitud_DataSource((ArrayList) lista);
		
//		facesContext = FacesContext.getCurrentInstance();
//		sessionScope =(Map) facesContext
//				.getApplication()
//				.createValueBinding("#{sessionScope}")
//				.getValue(facesContext);
//		
//		String grupoAdm = (String) this.getSession(true).getAttribute("GRUPO_ADM");
//		String grupoJrd = (String) this.getSession(true).getAttribute("GRUPO_JRD");
//		String grupoOfi = (String) this.getSession(true).getAttribute("GRUPO_OFI");		
//
//		System.out.println("grupoAdm: "+grupoAdm);
//		System.out.println("grupoJrd: "+grupoJrd);
//		System.out.println("grupoOfi: "+grupoOfi);
//		
//		if(grupoAdm ==null && grupoJrd==null ){
//			UsuarioLDAP2 usuario = (UsuarioLDAP2) this.getSession(true).getAttribute("USUARIO_SESION");
//			this.solicitudBuscar.setCodOfi(usuario.getCodofi());
//			this.solicitudBuscar.setDesOfi(usuario.getDesofi());
//			solicitud.setCodOfi(usuario.getCodofi());
//			lista= solicitudService.selectDynamicWhereLike(solicitud);
//			this.setSolicitud_DataSource((ArrayList) lista);
//		}
    	
		
	}		
	
	

	public Solicitud getSolicitudRegistrar() {
		return solicitudRegistrar;
	}

	public void setSolicitudRegistrar(Solicitud solicitudRegistrar) {
		this.solicitudRegistrar = solicitudRegistrar;
	}

	public Solicitud getSolicitudBuscar() {
		return solicitudBuscar;
	}

	public Solicitud getSolicitudModificarInicial() {
		return solicitudModificarInicial;
	}
	
	public void setSolicitudModificarInicial(Solicitud solicitudModificarInicial) {
		this.solicitudModificarInicial = solicitudModificarInicial;
	}
	
	public void setSolicitudBuscar(Solicitud solicitudBuscar) {
		this.solicitudBuscar = solicitudBuscar;
	}

	public Solicitud getSolicitudModificar() {
		return solicitudModificar;
	}

	public void setSolicitudModificar(Solicitud solicitudModificar) {
		this.solicitudModificar = solicitudModificar;
	}

	public SolicitudService getSolicitudService() {
		return solicitudService;
	}

	public void setSolicitudService(SolicitudService solicitudService) {
		this.solicitudService = solicitudService;
	}

	public ArrayList getSolicitud_DataSource() {
		return solicitud_DataSource;
	}

	public void setSolicitud_DataSource(ArrayList solicitud_DataSource) {
		this.solicitud_DataSource = solicitud_DataSource;
	}

	public ArrayList getSolicitud_SelectedRows() {
		return solicitud_SelectedRows;
	}

	public void setSolicitud_SelectedRows(ArrayList solicitud_SelectedRows) {
		this.solicitud_SelectedRows = solicitud_SelectedRows;
	}

	public int getSolicitud_LastIndex() {
		return solicitud_LastIndex;
	}

	public void setSolicitud_LastIndex(int solicitud_LastIndex) {
		this.solicitud_LastIndex = solicitud_LastIndex;
	}

	public boolean isGrabarModificar() {
		return grabarModificar;
	}

	public void setGrabarModificar(boolean grabarModificar) {
		this.grabarModificar = grabarModificar;
	}

	public String getLblError_Text() {
		return lblError_Text;
	}

	public void setLblError_Text(String lblError_Text) {
		this.lblError_Text = lblError_Text;
	}

	public String getTxtMarca() {
		return txtMarca;
	}

	public void setTxtMarca(String txtMarca) {
		this.txtMarca = txtMarca;
	}

	public boolean isMostrarSeguimiento() {
		return mostrarSeguimiento;
	}

	public void setMostrarSeguimiento(boolean mostrarSeguimiento) {
		this.mostrarSeguimiento = mostrarSeguimiento;
	}	
	
	public ArrayList getDocumentos_DataSource() {
		return documentos_DataSource;
	}
	
	public void setDocumentos_DataSource(ArrayList documentos_DataSource) {
		this.documentos_DataSource = documentos_DataSource;
	}

	public TipoDocumentoService getTipoDocumentoService() {
		return tipoDocumentoService;
	}

	public void setTipoDocumentoService(TipoDocumentoService tipoDocumentoService) {
		this.tipoDocumentoService = tipoDocumentoService;
	}

	public boolean isAdjuntarBorrar() {
		return adjuntarBorrar;
	}

	public void setAdjuntarBorrar(boolean adjuntarBorrar) {
		this.adjuntarBorrar = adjuntarBorrar;
	}

	public TipoDocumento getTipoDocumento() {
		return tipoDocumento;
	}

	public void setTipoDocumento(TipoDocumento tipoDocumento) {
		this.tipoDocumento = tipoDocumento;
	}

	public ArrayList<UploadedFile> getListaDocumentos() {
		return listaDocumentos;
	}

	public void setListaDocumentos(ArrayList<UploadedFile> listaDocumentos) {
		this.listaDocumentos = listaDocumentos;
	}

	public UploadedFile getCargaFile() {
		return cargaFile;
	}

	public void setCargaFile(UploadedFile cargaFile) {
		this.cargaFile = cargaFile;
	}

	public AnexoSolicitudService getAnexoSolicitudService() {
		return anexoSolicitudService;
	}

	public void setAnexoSolicitudService(AnexoSolicitudService anexoSolicitudService) {
		this.anexoSolicitudService = anexoSolicitudService;
	}

	public HistSolicitudService getHistSolicitudService() {
		return histSolicitudService;
	}

	public void setHistSolicitudService(HistSolicitudService histSolicitudService) {
		this.histSolicitudService = histSolicitudService;
	}

	public ArrayList getSeguimiento_DataSource() {
		return seguimiento_DataSource;
	}

	public void setSeguimiento_DataSource(ArrayList seguimiento_DataSource) {
		this.seguimiento_DataSource = seguimiento_DataSource;
	}
	
	public OficinaService getOficinaService() {
		return oficinaService;
	}
	
	public void setOficinaService(OficinaService oficinaService) {
		this.oficinaService = oficinaService;
	}
	
	public boolean isPostBack() {
		return isPostBack;
	}
	
	public void setPostBack(boolean isPostBack) {
		this.isPostBack = isPostBack;
	}
	
	public String getLblInfo_Text() {
		return lblInfo_Text;
	}
	
	public void setLblInfo_Text(String lblInfo_Text) {
		this.lblInfo_Text = lblInfo_Text;
	}
	public String getMsjconfirmRequest() {
		return msjconfirmRequest;
	}
	public void setMsjconfirmRequest(String msjconfirmRequest) {
		this.msjconfirmRequest = msjconfirmRequest;
	}
	public String getMsjRequest() {
		return msjRequest;
	}
	public void setMsjRequest(String msjRequest) {
		this.msjRequest = msjRequest;
	}
	public ArrayList getDocumentosObligatorios_DataSource() {
		return documentosObligatorios_DataSource;
	}
	public void setDocumentosObligatorios_DataSource(
			ArrayList documentosObligatorios_DataSource) {
		this.documentosObligatorios_DataSource = documentosObligatorios_DataSource;
	}
	public ArrayList getDocumentosOpcionales_DataSource() {
		return documentosOpcionales_DataSource;
	}
	public void setDocumentosOpcionales_DataSource(
			ArrayList documentosOpcionales_DataSource) {
		this.documentosOpcionales_DataSource = documentosOpcionales_DataSource;
	}
	public String getValorAncla() {
		return valorAncla;
	}
	public void setValorAncla(String valorAncla) {
		this.valorAncla = valorAncla;
	}
	public ArrayList getSolicitudOperBancarias_DataSource() {
		return solicitudOperBancarias_DataSource;
	}
	public void setSolicitudOperBancarias_DataSource(
			ArrayList solicitudOperBancarias_DataSource) {
		this.solicitudOperBancarias_DataSource = solicitudOperBancarias_DataSource;
	}
	public String getTxtDesOperBan() {
		return txtDesOperBan;
	}
	public void setTxtDesOperBan(String txtDesOperBan) {
		this.txtDesOperBan = txtDesOperBan;
	}
	public SolicitudOperBanService getSolicitudOperBanService() {
		return solicitudOperBanService;
	}
	public void setSolicitudOperBanService(
			SolicitudOperBanService solicitudOperBanService) {
		this.solicitudOperBanService = solicitudOperBanService;
	}
	public OperacionBancariaService getOperacionBancariaService() {
		return operacionBancariaService;
	}
	public void setOperacionBancariaService(
			OperacionBancariaService operacionBancariaService) {
		this.operacionBancariaService = operacionBancariaService;
	}
	public ArrayList getListOficinasTerritorio() {
		return listOficinasTerritorio;
	}
	public void setListOficinasTerritorio(ArrayList listOficinasTerritorio) {
		this.listOficinasTerritorio = listOficinasTerritorio;
	}
	public TerritorioService getTerritorioService() {
		return territorioService;
	}
	public void setTerritorioService(TerritorioService territorioService) {
		this.territorioService = territorioService;
	}
	public String getCodTerritorio() {
		return codTerritorio;
	}
	public void setCodTerritorio(String codTerritorio) {
		this.codTerritorio = codTerritorio;
	}
	public String getDesTerritorio() {
		return desTerritorio;
	}
	public void setDesTerritorio(String desTerritorio) {
		this.desTerritorio = desTerritorio;
	}
	public MultitablaService getMultitablaService() {
		return multitablaService;
	}
	public void setMultitablaService(MultitablaService multitablaService) {
		this.multitablaService = multitablaService;
	}
	
	public String cerrarSession(){
		//FacesContext.getCurrentInstance().getExternalContext().getSession(false);
		FacesContext fc = FacesContext.getCurrentInstance();
		HttpSession s = (HttpSession) fc.getExternalContext().getSession(false);
		s.invalidate();
		return"login";
	}
	public Oficina1Service getOficina1Service() {
		return oficina1Service;
	}
	public void setOficina1Service(Oficina1Service oficina1Service) {
		this.oficina1Service = oficina1Service;
	}
	
	/*
	public String contextPath(){
		
		FacesContext ctx = FacesContext.getCurrentInstance();
		//HttpServletResponse response =(HttpServletResponse) ctx.getExternalContext().getResponse();
		HttpServletRequest resquest =(HttpServletRequest) ctx.getExternalContext().getRequest();
 
		return resquest.getContextPath();
		 
	}
	*/
	/*
	public String getContextPath() {
		FacesContext ctx = FacesContext.getCurrentInstance();
		//HttpServletResponse response =(HttpServletResponse) ctx.getExternalContext().getResponse();
		HttpServletRequest resquest =(HttpServletRequest) ctx.getExternalContext().getRequest();
 
		contextPath = resquest.getContextPath().toString();
		System.out.println(contextPath);
		return contextPath;
	}
	public void setContextPath(String contextPath) {
		this.contextPath = contextPath;
	}
	*/
	
	
	
	public boolean isDisabledExportar() {
		return disabledExportar;
	}
	public void setDisabledExportar(boolean disabledExportar) {
		this.disabledExportar = disabledExportar;
	}
	public void reset() {		
		solicitudRegistrar = new Solicitud();
		solicitudModificar = new Solicitud();
		
	}
	
	
	  public String getTamanioSolicitud_DataSource() {
		return tamanioSolicitud_DataSource;
	}
	public void setTamanioSolicitud_DataSource(String tamanioSolicitud_DataSource) {
		this.tamanioSolicitud_DataSource = tamanioSolicitud_DataSource;
	}
	
	
	
	
	
	  
}
